package cn.cqie.attendance.manager.controller;

import cn.cqie.attendance.common.util.Page;
import cn.cqie.attendance.manager.service.AdminGroupService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 697
 * @date 2021/6/22 10:46
 */
@RestController
@Api(tags = "管理员端-项目组信息管理模块")
@RequestMapping("/admin/group")
public class AdminGroupController {


    @Autowired
    private AdminGroupService adminGroupService;

    /**
     * 查询分组信息  可以按照是否结业 小组名称查询
     * @param status
     * @param groupName
     * @return
     */
    @GetMapping("/queryGroupInfoByStatusAndGroupName")
    @ApiOperation("查询分组信息  可以按照是否结业 小组名称查询")
    public Page queryGroupInfoByStatusAndGroupName(Integer status,String groupName){
        return adminGroupService.queryGroupInfoByStatusAndGroupName(status,groupName);
    }


    /**
     * 新增分组
     * @param status 状态 0未结业  1已结业
     * @param groupName 分组名称
     * @return
     */
    @PostMapping("/addGroup")
    @ApiOperation("新增分组")
    public Page addGroup(Integer status,String groupName){

        return adminGroupService.addGroup(status,groupName);
    }


    /**
     * 根据分组ID修改分组信息
     * @param groupName 分组名称
     * @param status 分组状态
     * @param groupId 分组ID
     * @return
     */
    @PostMapping("/updateGroupInfoById")
    @ApiOperation("根据分组ID修改分组信息")
    public Page updateGroupInfoById(String groupName,Integer status,Integer groupId){
        return adminGroupService.updateGroupInfoById(groupName,status,groupId);
    }


    /**
     * 根据分组ID删除分组信息
     * @param groupId 分组ID
     * @return
     */
    @GetMapping("/deleteGroupById")
    @ApiOperation("根据分组ID删除分组信息")
    public Page deleteGroupById(Integer groupId){
        return adminGroupService.deleteGroupById(groupId);
    }


    /**
     * 根据分组ID查询分组学生信息 模糊 可组合查询
     * @param groupName 分组名称
     * @param stuName 学生姓名
     * @param stuNumber 学号
     * @param groupId 分组ID
     * @return
     */
    @GetMapping("/queryStudentByGroupIdCombination")
    @ApiOperation("根据分组ID查询分组学生信息 模糊 可组合查询")
    public Page queryStudentByGroupIdCombination(String groupName, String stuName, String stuNumber, Integer groupId){
        return adminGroupService.queryStudentByGroupIdCombination(groupName,stuName,stuNumber,groupId);
    }


    /**
     * 更换学生分组 支持批量更新
     * @param groupId 分组ID
     * @param ListStuId 学生ID
     * @return
     */
    @PostMapping("/updateStudentGroupById")
    @ApiOperation("更换学生分组 支持批量更新")
    public Page updateStudentGroupById(Integer groupId, @RequestBody List<Integer> ListStuId){
        System.out.println("controller测试："+ListStuId);
        return adminGroupService.updateStudentGroupById(groupId,ListStuId);
    }


    /**
     * 查询所偶未结业的学生
     * @param collegeName 学员名
     * @param majorName 专业
     * @param gradeName 年级
     * @param className 班级
     * @param stuName 学生姓名
     * @param stuNumber 学号
     * @return
     */
    @GetMapping("/qureyAllStudentNoGraduation")
    @ApiOperation("查询所有未结业的学生")
    public Page qureyAllStudentNoGraduation(String collegeName, String majorName, String gradeName, String className, String stuName, String stuNumber){
        return adminGroupService.qureyAllStudentNoGraduation(collegeName,majorName,gradeName,className,stuName,stuNumber);
    }


    /***
     * 小组新增学生
     * @param groupId 小组ID
     * @param ListStuId　学生ID
     * @return
     */
    @PostMapping("/addStudentToGroup")
    @ApiOperation("小组新增学生")
    public Page addStudentToGroup(Integer groupId,@RequestBody List<Integer> ListStuId){
        return adminGroupService.addStudentToGroup(groupId,ListStuId);
    }


    /**
     * 删除小组某个学生  支持批量操作
     * @param ListStuId 学生ID
     * @return
     */
    @PostMapping ("/deleteStudentByGroupById")
    @ApiOperation("删除小组某个学生  支持批量操作")
    public Page deleteStudentByGroupById(@RequestBody List<Integer> ListStuId){
        System.out.println("ces :"+ListStuId);
        return adminGroupService.deleteStudentByGroupById(ListStuId);
    }
}
